﻿using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Dominio;
using Persistencia;
using PersistenciaImplementacion;

namespace PruebasUnitarias
{
    [TestClass]
    public class TestTareasMantenimiento
    {
        [TestMethod]
        public void AgregarCombustible()
        {
            ObjetoPersistible.per = new PersistenciaImplementacion.PersisImplem();

            Contenido contenido = new Contenido("Super95SP");
            Tanque t = new TanqueCombustible("Tanque", 100, contenido,5);
            t.Create();
            t.AgregarCombustible(10);
            t.Update();

            int cantidadEsperada = 10;
            Assert.AreEqual(cantidadEsperada, t.LitrosDisponibles);
        }

        [TestMethod]
        public void TareaLimpiezaTanqueCombustible()
        {
            ObjetoPersistible.per = new PersistenciaImplementacion.PersisImplem();

            Contenido contenido = new Contenido("Super95SP");
            TanqueCombustible t = new TanqueCombustible("Tanque", 100, contenido, 5);
            //Creo el tanque y le agrego combustible
            t.Create();
            t.AgregarCombustible(90);
            t.Update();

            //Aplico la tarea de limpieza
            t.Limpieza(t);

            int cantidadEsperada = 0;
            Assert.AreEqual(cantidadEsperada, t.LitrosDisponibles);
        }

        [TestMethod]
        public void TareaLimpiezaTanqueAgua()
        {
            ObjetoPersistible.per = new PersistenciaImplementacion.PersisImplem();

            TanqueAgua t = new TanqueAgua("Tanque Agua", 100, "Subterraneo", 1);
            //Creo el tanque
            t.Create();

            //Aplico la tarea de limpieza
            t.Limpieza(t);

            int cantidadEsperada = 0;
            Assert.AreEqual(cantidadEsperada, t.LitrosDisponibles);
        }

        [TestMethod]
        public void TareaLimpiezaTanqueAceite()
        {
            ObjetoPersistible.per = new PersistenciaImplementacion.PersisImplem();

            TanqueAceite t = new TanqueAceite("Tanque aceite", 100, 13, 1);
            //Creo el tanque
            t.Create();

            //Aplico la tarea de limpieza
            t.Limpieza(t);

            int cantidadEsperada = 0;
            Assert.AreEqual(cantidadEsperada, t.LitrosDisponibles);
        }

        [TestMethod]
        public void TareaTratamientoTanqueAgua()
        {
            ObjetoPersistible.per = new PersistenciaImplementacion.PersisImplem();

            TanqueAgua t = new TanqueAgua("Tanque Agua", 100, "Subterraneo",1);
            t.Create();
            t.Tratamiento(t);
            t.Update();

            int cantidadEsperada = 5;
            Assert.AreEqual(cantidadEsperada, t.Calidad);
        }

        [TestMethod]
        public void TareaTratamientoTanqueAceite()
        {
            ObjetoPersistible.per = new PersistenciaImplementacion.PersisImplem();

            TanqueAceite t = new TanqueAceite("Tanque aceite", 100, 13, 1);
            t.Create();
            t.Tratamiento(t);
            t.Update();

            int cantidadEsperada = 3;
            Assert.AreEqual(cantidadEsperada, t.Calidad);
        }

        [TestMethod]
        public void TareaTratamientoTanqueCombustible()
        {
            ObjetoPersistible.per = new PersistenciaImplementacion.PersisImplem();

            Contenido contenido = new Contenido("Super95SP");
            TanqueCombustible t = new TanqueCombustible("Tanque", 100, contenido, 4);
            t.Create();
            t.Tratamiento(t);
            t.Update();

            int cantidadEsperada = 5;
            Assert.AreEqual(cantidadEsperada, t.Calidad);
        }

    }
}
